#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <string>

using namespace std;

template< typename T>
class A
{
	public:
		T& set( T& a);

};

template< typename T> T& A<T>::set( T& a)
{ return a; }

template<> std::string& A<std::string>::set( std::string& a)
{ a += "xx"; return a;}

int main(void)
{
	A<int> a;
	int c = 20;
	int k = a.set(c);

	string aa="sss";
	A<string> bb;

	string cc = bb.set(aa);
	cout<<k<<endl;
	cout<<cc<<endl;
	return 0;

}

/*
#include <iostream>
#include <string>

using namespace std;

template<class T>
class A {

};

template<class T>
class A {

};


int main ()
{
	return 0;
}
*/
